home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Libraries / WASTE 1.1 / WESelectors.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-02  |  1.9 KB  |  85 lines  |  [TEXT/MPCC]

  1. /*
  2.  *    Selectors.c
  3.  *
  4.  *    WASTE PROJECT
  5.  *    WEGetInfo / WESetInfo
  6.  *
  7.  *    Copyright (c) 1993-1994 Marco Piovanelli
  8.  *    All Rights Reserved
  9.  *
  10.  */
  11.  
  12. #include "WASTEIntf.h"
  13.  
  14. WELookupTable _WEMainSelectorTable[] = {
  15.     { 'clik', 0x0064, 0x0004 },
  16.     { 'drag', 0x0094, 0x0004 },
  17.     { 'line', 0x0008, 0x0004 },
  18.     { 'port', 0x0000, 0x0004 },
  19.     { 'post', 0x0090, 0x0004 },
  20.     { 'pre ', 0x008C, 0x0004 },
  21.     { 'refc', 0x007C, 0x0004 },
  22.     { 'runa', 0x0010, 0x0004 },
  23.     { 'scrl', 0x0074, 0x0004 },
  24.     { 'styl', 0x000C, 0x0004 },
  25.     { 'text', 0x0004, 0x0004 },
  26.     { 'tsmd', 0x0080, 0x0004 },
  27.     { 0     , 0x0000, 0x0000 }
  28. };
  29.  
  30. WELookupTable _WEObjectHandlerSelectorTable[] = {
  31.     { 'clik', 0x0010, 0x0004 },
  32.     { 'curs', 0x0014, 0x0004 },
  33.     { 'draw', 0x000C, 0x0004 },
  34.     { 'free', 0x0008, 0x0004 },
  35.     { 'new ', 0x0004, 0x0004 },
  36.     { 0     , 0x0000, 0x0000 }
  37. };
  38.  
  39. pascal void _WELookupSelector(WELookupTable *table, OSType selector, WEFieldDescriptor *desc)
  40. {
  41.     for ( ; table->selector != selector ; table++ )
  42.         if ( * (long *) &(table->desc) == 0L )
  43.             break;
  44.     
  45.     *desc = table->desc;
  46. }
  47.  
  48. pascal OSErr _WEGetField(WELookupTable *table, OSType selector, long *info, void *structure)
  49. {
  50.     WEFieldDescriptor desc;
  51.     
  52.     _WELookupSelector(table, selector, &desc);
  53.     
  54.     if (desc.fLength == 0)
  55.         return weUndefinedSelectorErr;
  56.     
  57.     *info = * (long *) ((long) structure + desc.fOffset);
  58.     return noErr;
  59. }
  60.  
  61. pascal OSErr _WESetField(WELookupTable *table, OSType selector, long *info, void *structure)
  62. {
  63.     WEFieldDescriptor desc;
  64.     
  65.     _WELookupSelector(table, selector, &desc);
  66.     
  67.     if (desc.fLength == 0)
  68.         return weUndefinedSelectorErr;
  69.     
  70.     * (long *) ((long) structure + desc.fOffset) = *info;
  71.     return noErr;
  72. }
  73.  
  74.  
  75. pascal OSErr WEGetInfo(OSType selector, void *info, WEHandle hWE)
  76. {
  77.     return _WEGetField(_WEMainSelectorTable, selector, (long *)info, (void *)*hWE);
  78. } // { WEGetInfo }
  79.  
  80. pascal OSErr WESetInfo(OSType selector, const void *info, WEHandle hWE)
  81. {
  82.     return _WESetField(_WEMainSelectorTable, selector, (long *)info, (void *)*hWE);
  83. } // { WESetInfo }
  84.  
  85.